دسته بندی ها
15:45 1399/08/16

دلیل خطای Uncaught (in promise) cancel در sweet alert

مشخصات سوال کننده :
کاربر : pedram_khan     امتیاز کاربر : 277     رتبه کاربر : 6
دسته بندی : جاوا اسکریپت جی کوئری SweetAlert

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 2621
هوش مصنوعی

پاسخ هوش مصنوعی

خطای "Uncaught (in promise) cancel" به این دلیل رخ می دهد که در نسخه های جدید SweetAlert، رفتار و ساختار فراخوانی callback تغییر پیدا کرده است. به جای استفاده از یک تابع callback به صورت مستقیم در گزینه ها، از Promise استفاده می شود. به این ترتیب، شما باید به روز رسانی کنید که از Promise ها بهره ببرید.

در اینجا یک نمونه کد اصلاح شده برای شما آورده ام:

            swal({
                title: "Are you sure?",
                text: "You will not be able to recover this imaginary file!",
                icon: "warning",
                buttons: ["No, cancel plx!", "Yes, delete it!"],
                dangerMode: true,
            }).then((willDelete) => {
                if (willDelete) {
                    alert('No');
                } else {
                    alert('Yes');
                }
            });

این کد با استفاده از Promise ها به درستی عمل می کند و دیگر خطای "uncaught in promise" را نخواهید داشت.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : saedbfd 14:15 1399/08/17

دلیل خطای Uncaught (in promise) cancel در sweet alert

شما کدهای خودتون رو برای استفاده از Confirm Box در sweet alert درست نوشتید ولی در نسخه جدیدتر sweet alert دستور catch اضافه شده که می تونید با استفاده از اون به راحتی قبل از ارسال اطلاعات به سمت سرور از کاربر تاییدیه بگیرید. به کدهای زیر دقت کنید.

 

            swal({
                title: "Are you sure?",
                text: "You will not be able to recover this imaginary file!",
                type: "warning",
                showCancelButton: true,
                confirmButtonColor: "#DD6B55",
                confirmButtonText: "Yes, delete it!",
                cancelButtonText: "No, cancel plx!",
                closeOnConfirm: false,
                closeOnCancel: false
            }).then(
                function (h) {
                    if (h !== 'dismissed') {
                        alert('Yes');
                    }
                }
            ).catch(() => swal.close());
        });

کافیه فقط کدهای بالا رو کپی و پیست کنید و تست کنید.

Uncaught (in promise) cancel using SweetAlert2

به این پاسخ امتیاز بدهید    0
امتیاز: 1664 رتبه: 1
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود